package org.xx.armory.spring5.mvc;

import static org.xx.armory.spring5.mvc.ModelUtils.paramPositive;

/**
 * 上传文件相关的工具类。
 */
public class UploadFileUtils {
    private UploadFileUtils() {
        throw new AssertionError();
    }

    /**
     * 返回不包含路径的文件名。
     *
     * @param originFileName
     *         来自客户端的原始文件名，可能包含路径信息。
     * @return 不包含路径的文件名。
     */
    public static String simpleFileName(
            String originFileName
    ) {
        final var p1 = originFileName.lastIndexOf('/');
        final var p2 = originFileName.lastIndexOf('\\');

        final var p = Math.max(p1, p2);

        return p >= 0 ? originFileName.substring(p + 1) : originFileName;
    }

    /**
     * 生成对象Key。
     *
     * @param root
     *         根类型，表示文件的基础分类。
     * @param objId
     *         关联的对象ID。
     * @param objType
     *         对象类型。
     * @param fileName
     *         文件名。
     * @return 完整的对象Key。
     */
    public static String makeObjectKey(
            String root,
            long objId,
            int objType,
            String fileName
    ) {
        paramPositive(objType, "objType");

        return root + "/" + objId + "/" + objType + "/" + fileName;
    }
}
